The Internet, also referred to as an “internetwork”, is a set of computer networks, possibly dissimilar, joined together by means of gateways that handle data transfer and the conversion of messages from protocols of the sending network to the protocols used by the receiving network. When capitalized, the term “Internet” refers to the collection of networks and gateways that use the TCP/IP suite of protocols.
The Internet has become a cultural fixture as a source of both information and entertainment. Many businesses are creating Internet sites as an integral part of their marketing efforts, informing consumers of the products or services offered by the business or providing other information seeking to engender brand loyalty. Many federal, state, and local government agencies are also employing Internet sites for informational purposes, particularly agencies, which must interact with virtually all segments of society such as the Internal Revenue Service and secretaries of state. Providing informational guides and/or searchable databases of online public records may reduce operating costs. Further, the Internet is becoming increasingly popular as a medium for commercial transactions.
Currently, the most commonly employed method of transferring data over the Internet is to employ the World Wide Web environment, also called simply “the Web”. Other Internet resources exist for transferring information, such as File Transfer Protocol (FTP) and Gopher, but have not achieved the popularity of the Web. In the Web environment, servers and clients effect data transaction using the Hypertext Transfer Protocol (HTTP), a known protocol for handling the transfer of various data files (e.g., text, still graphic images, audio, motion video, etc.). The information in various data files is formatted for presentation to a user by a standard page description language, the Hypertext Markup Language (HTML). In addition to basic presentation formatting, HTML allows developers to specify “links” to other Web resources identified by a Uniform Resource Locator (URL). A URL is a special syntax identifier defining a communications path to specific information. Each logical block of information accessible to a client, called a “page” or a “Web page”, is identified by a URL. The URL provides a universal, consistent method for finding and accessing this information, not necessarily for the user, but mostly for the user's Web “browser”. A browser is a program capable of submitting a request for information identified by an identifier, such as, for example, a URL. A user may enter a domain name through a graphical user interface (GUI) for the browser to access a source of content. The domain name is automatically converted to the Internet Protocol (IP) address by a domain name system (DNS), which is a service that translates the symbolic name entered by the user into an IP address by looking up the domain name in a database.
Transmission Control Protocol/Internet Protocol (TCP/IP) is a communications protocol that this the protocol of the Internet and has become the global standard for communications. TCP provides transport functions, which ensures that the total amount of bytes sent is received correctly at the other end. UDP, which is part of the TCP/IP suite, is an alternate transport that does not guarantee delivery. It is widely used for real time voice and video transmissions where erroneous packets are not retransmitted. TCP/IP is a routable protocol, and the IP part of TCP/IP provides the routing capability. In a routable protocol, all messages contain not only the address of the destination station, but the address of a destination network. This address allows TCP/IP messages to be sent to multiple networks within an organization or around the world. User datagram protocol (UDP) is a protocol within the TCP/IP protocol suite used in place of TCP when a reliable delivery is not required.
TCP or UDP traffic is generally policed at a server based on factors such as round trip time of data or packet loss. As a given network path becomes congested, the round trip time of the data goes up or packets are dropped by intermediate devices on that network path. In these cases, when the server detects this congestion, it will invoke some form of congestion control, limiting how much traffic is allowed across a given TCP or UDP association. A TCP or UDP association is all traffic between one unique source and destination IP and port address pair. For example, IP1 port 1 to IP2 port 1 is one association. IP1 port 1 to IP3 port 1 would be another association. When this association is only for TCP traffic, this association is referred to as a TCP connection. When this association is only for UDP traffic, it is referred to as a UDP association. This congestion control uses limits such as congestion windows, which are windows that allow a certain amount of data to be sent before receiving an acknowledgment from the client. By lowering these limits, such as a TCP congestion window, less data is sent for that given TCP or UDP association. As each TCP or UDP association sends less data, round trip time should go down, less packets should be dropped by previously overloaded devices, and maximum throughput should be achieved for a given network path.
The problem is that this congestion may not be detected until congestion reaches a state such that round trip time delay is detected or packets are already being dropped. By the time the server detects this, the network congestion may be such that only significant reductions in sending of data may relieve the congestion, and the traffic is thus subject to burstiness. If packets are being dropped by intermediate devices, then not only must the sending of data be reduced, but previously transmitted packets must be retransmitted, adding more traffic to send at a slower rate, and thus reducing true throughput even more. Furthermore, reductions in congestion are generally on a per TCP or per UDP association. Thus, though only one or two of the associations may be causing the congestion, the round trip time delays and dropped packets will likely be detected for all associations. This situation causes congestion control to be invoked for associations that are sending far less data than those who may be truly congesting the network.
Therefore, it would be advantageous to have an improved method and apparatus for managing bandwidth use or traffic at a server for a set of network connections.